# Progetto 7 Controllo Remoto Bluetooth
### **1.Descrizione**

In questo kit è presente un modulo Bluetooth DX-BT24 5.1. Questo modulo bluetooth dispone di uno spazio di 256Kb e rispetta la specifica Bluetooth V5.1BLE, che supporta i comandi AT. Gli utenti possono modificare parametri come la velocità di trasmissione (baud rate) e il nome del dispositivo della porta seriale secondo necessità.
Inoltre, supporta l'interfaccia UART e la trasmissione trasparente della porta seriale bluetooth, che include anche i vantaggi di basso costo, dimensioni ridotte, basso consumo energetico e alta sensibilità per l'invio e la ricezione. Notevolmente, necessita solo di pochi componenti periferici per realizzare le sue potenti funzioni.
### **2.Specifiche**
- Protocollo Bluetooth: Bluetooth Specification V5.1 BLE
- Distanza di lavoro: In ambiente aperto, può raggiungere una comunicazione a ultra lunga distanza di 40m
- Frequenza operativa: banda ISM a 2.4GHz
- Interfaccia di comunicazione: UART
- Certificazione Bluetooth: Conforme agli standard di certificazione FCC CE ROHS REACH
- Parametri porta seriale: 9600, 8 bit dati, 1 bit di stop, bit di parità disabilitato, nessun controllo di flusso
- Alimentazione: 5V DC
- Temperatura di esercizio: –10℃ a +65℃
### **3.Applicazione**
Il modulo DX-BT24 supporta anche il protocollo BT5.1 BLE, che può essere collegato direttamente a dispositivi iOS con funzione Bluetooth BLE, e supporta l'esecuzione residente di programmi in background. È principalmente utilizzato nel campo della trasmissione wireless di dati a breve distanza. Permette di evitare collegamenti via cavo ingombranti e può sostituire direttamente i cavi seriali.
**Aree di applicazione di successo dei moduli BT24:**
※ Trasmissione dati wireless Bluetooth;
※ Periferiche per telefoni cellulari e computer;
※ Dispositivi POS portatili;
※ Trasmissione dati wireless di apparecchiature mediche;
※ Controllo domotico intelligente;
※ Stampanti Bluetooth;
※ Giocattoli telecomandati Bluetooth;
※ Biciclette condivise;
### **4.Porte**

①STATE:Pin di stato
②RX:Pin di ricezione
③TX:Pin di trasmissione
④GND:GND
⑤VCC:Alimentazione
⑥EN:Pin di abilitazione
Collegare il modulo BT alla scheda di sviluppo.
| Uno | BT24 |
| :--: | :--: |
| TX | RX |
| RX | TX |
| VCC | 5V |
| GND | GND |
### **5.Componenti**
| Scheda di sviluppo *1 | Driver motore 8833 *1 | Modulo LED Rosso *1 |
| :--------------------------------------: | :--------------------------------------: | :-------------------------------------------------------------: |
|  |  |  |
| Cavo Dupont 3P *1 | Cavo USB *1 | Modulo Bluetooth DX-BT24 *1 |
|  |  |  |
### **6.Diagramma di collegamento**

RXD, TXD, GND e VCC del modulo BT sono collegati rispettivamente a TX, RX, G e 5V.
STATE e BRK del modulo BT non necessitano di collegamento.
Nota: la direzione del modulo BT quando viene inserito sulla scheda 8833. E non inserirlo prima di caricare il codice.
### **7.Codice di test**
**Nota:** Prima di caricare il codice di test, è necessario rimuovere il modulo Bluetooth, altrimenti il caricamento del codice fallirà. Collegare il modulo Bluetooth dopo aver caricato correttamente il codice.
```c
//***********************************************************************
/*
keyestudio 4wd BT Car
lesson 7.1
Bluetooth
http://www.keyestudio.com
*/
char ble_val; //variabile carattere, usata per memorizzare il valore ricevuto dal Bluetooth
```cpp
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) // assicurarsi che ci siano dati nel buffer seriale
{
ble_val = Serial.read(); // Leggi i dati dal buffer seriale
Serial.println(ble_val); // Stampa
}
}
//***********************************************************************
```
### **8. Risultato del Test**
Dopo aver caricato con successo il codice sulla scheda V4.0, collegare i cablaggi secondo lo schema elettrico, quindi collegare il computer tramite un cavo USB per alimentare la scheda. Dopo l'accensione, inserire il modulo BT e il LED lampeggerà, quindi è necessario scaricare l'app BT.
### **9. Scarica l'APP Bluetooth**
**Sistema Apple**
(1). Aprire l'App Store sull'iPhone.
(2). Cercare keyes BT car e scaricare l'APP sul telefono.

(3). Dopo l'installazione, entrare nella sua interfaccia.

(4). Cliccare il pulsante "**Connect**" nell'angolo in alto a sinistra per cercare automaticamente il Bluetooth. Quando viene trovato **BT24**, cliccare "**Connect**" per connettere il Bluetooth, quindi cliccare  per entrare nell'interfaccia di controllo dell'auto smart 4WD.

**Sistema Android**
(1). Entrare nel Google Play Store e cercare “keyes 4wd”.

(2). L'icona dell'app appare come mostrato dopo l'installazione.

(3). Cliccare sull'app per entrare nella pagina seguente.

(4). Dopo aver connesso il Bluetooth, collegare l'alimentazione e l'indicatore LED del modulo Bluetooth lampeggerà. Toccare “**Connect**” per cercare il Bluetooth.

(5). Quando viene trovato **BT24**, cliccare "Connect" per connettere il Bluetooth. Quando "**Connect**" diventa "**is Connected**", significa che la connessione Bluetooth è avvenuta con successo. Come mostrato nell'immagine sottostante, il LED Bluetooth rimane acceso.

(6). Dopo aver connesso il modulo Bluetooth, aprire il monitor seriale e impostare la velocità di trasmissione a 9600 baud. Premendo il pulsante dell'APP Bluetooth, verranno visualizzati i caratteri corrispondenti, come mostrato di seguito:

| Tasto | Funzione |
| ------------------------- | --------------------------------- |
|  | Associa modulo Bluetooth DX-BT24 5.1 |
|  | Disconnetti Bluetooth |
| | Carattere di controllo | Carattere di controllo |
| ------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|  | Premere: F
Rilasciare: S | Premere il pulsante, l'auto va avanti;
rilasciare per fermarsi |
|  | Premere: L
Rilasciare: S | Premere il pulsante, l'auto gira a sinistra;
rilasciare per fermarsi |
|  | Premere: R
Rilasciare: S | Premere il pulsante, l'auto gira a destra;
rilasciare per fermarsi |
|  | Premere: B
Rilasciare: S | Premere il pulsante, l'auto va indietro;
rilasciare per fermarsi |
|  | Premere: “a”
Rilasciare: “S” | Clicca per accelerare (massimo:255) |
|  | Premere: “d”
Rilasciare: “S” | Clicca per rallentare (minimo:0) |
|  | Clicca per avviare la funzione di
rilevamento della gravità del
telefono cellulare: clicca di nuovo per
uscire dal controllo di rilevamento della gravità | |
|  | Clicca per inviare “X”,
clicca di nuovo per inviare “S” | Avvia la funzione di tracciamento della linea;
clicca di nuovo per uscire |
|  | Clicca per inviare “Y”,
clicca di nuovo per inviare “S” | Avvia la funzione di evitamento ad ultrasuoni;
clicca di nuovo per uscire |
|  | Clicca per inviare “U”,
clicca di nuovo per inviare “S” | Avvia la funzione di inseguimento ad ultrasuoni;
clicca di nuovo per uscire |
|  | Clicca per inviare “G”,
clicca di nuovo per inviare “S” | Avvia la funzione di restrizione;
clicca di nuovo per uscire |
### **10. Spiegazione del Codice**
**Serial.available()** : Restituisce il numero di caratteri attualmente presenti nel buffer della porta seriale. Generalmente, questa funzione viene utilizzata per verificare se ci sono dati nel buffer della porta seriale. Quando Serial.available() > 0, significa che la porta seriale ha ricevuto dati e possono essere letti;
**Serial.read() :** Si riferisce all'estrazione e alla lettura di un Byte di dati dal buffer della porta seriale. Ad esempio, se un dispositivo invia dati ad Arduino tramite la porta seriale, possiamo usare Serial.read() per leggere i dati inviati.
### **11. Pratica Estesa**
Qui vediamo come utilizzare il comando inviato dal telefono cellulare per accendere o spegnere un LED. Guardando lo schema di collegamento, un LED è collegato al pin D9.

```c
//****************************************************************************
/*
keyestudio smart turtle robot
lesson 7.2
Bluetooth LED
http://www.keyestudio.com
*/
int ledpin=9;
char ble_val;// Una variabile intera usata per memorizzare il valore ricevuto via Bluetooth
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}
void loop()
{
if (Serial.available() > 0) //Controlla se ci sono dati nella cache della porta seriale
{
ble_val = Serial.read(); //Legge i dati dalla cache della porta seriale
Serial.print("DATI RICEVUTI:");
Serial.println(ble_val);
if (ble_val == 'F') {
digitalWrite(ledpin, HIGH);
Serial.println("led acceso");
}
if (ble_val == 'B') {
digitalWrite(ledpin, LOW);
Serial.println("led spento");
}
}
}
//****************************************************************************
```
Dopo aver caricato con successo il codice sulla scheda V4.0, collega i cablaggi secondo lo schema elettrico, quindi collega il computer tramite un cavo USB per alimentare la scheda. Dopo l'accensione, clicca su  e  per controllare l'accensione e lo spegnimento del LED.